엑셀 시트 복사하기(with POI) + 리팩터링 :: JSP 일반[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

JSP 일반
[1]
등록일:2010-08-10 23:34:12 (0%)
작성자:
제목:엑셀 시트 복사하기(with POI) + 리팩터링

출처 : http://whiteship.me/1708

 

private void copySheet(HSSFSheet from, HSSFSheet to) {
        HSSFRow firstRow = from.getRow(0);
        HSSFRow secondRow = from.getRow(1);
        HSSFRow thirdRow = from.getRow(2);
        
        HSSFRow firstRow2 = to.createRow(0);
        HSSFRow secondRow2 = to.createRow(1);
        HSSFRow thirdRow2 = to.createRow(2);
        
        Iterator<HSSFCell> iterator = firstRow.cellIterator();
        short col = 0;
        while(iterator.hasNext())
            addCell(firstRow2, col++, iterator.next().getStringCellValue());
        
        col = 0;
        iterator = secondRow.cellIterator();
        while(iterator.hasNext())
            addCell(secondRow2, col++, iterator.next().getStringCellValue());

        col = 0;
        iterator = thirdRow.cellIterator();
        while(iterator.hasNext())
            addCell(thirdRow2, col++, iterator.next().getStringCellValue());
    }

무려 세 번이나 중복되고 있지만, 일단 기능이 제대로 돌아가는지부터 보려고 허겁 지겁 코딩을 하고 결과를 확인해 보니 괜춘하네요. 여기서 그만 둘까도 생각했지만, 에이~ 뭐 시간도 많은데 저런걸 그냥 두긴 뭐하다 싶어서 리팩터링..

    private void copySheet(HSSFSheet from, HSSFSheet to, int fromRowCnt, int toRowCnt) {
        HSSFRow fromRow = null;
        HSSFRow toRow = null;
        for(int i = fromRowCnt ; i <= toRowCnt ; i++){
            fromRow = from.getRow(i);
            toRow = to.createRow(i);
            Iterator<HSSFCell> iterator = fromRow.cellIterator();
            short col = 0;
            while(iterator.hasNext())
                addCell(toRow, col++, iterator.next().getStringCellValue());
        }
    }

리팩터링 하는 김에 좀 더 Generic하게 만들어서 몇 번째 줄부터 몇 번째 줄까지 복사할지 인자로 넘겨주도록 수정 함. 이제 저 메소드는 ExcelUtils로 옮기면 ExelView쪽 코드는 약간 더 깔끔해지겠죠. 그건 뭐 간단하니 생략합니다.

[본문링크] 엑셀 시트 복사하기(with POI) + 리팩터링
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=31585
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.